package com.ltcode.sys.interfaces.converter;

import com.ltcode.sys.domain.model.SysRole;
import com.ltcode.sys.interfaces.dto.SysRoleDTO;
import org.springframework.beans.BeanUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * 角色DTO转换器
 * 
 * @author ltcode
 * @since 2024-01-01
 */
public class SysRoleDTOConverter {

    /**
     * 领域模型转换为DTO
     */
    public static SysRoleDTO toDTO(SysRole domain) {
        if (domain == null) {
            return null;
        }
        SysRoleDTO dto = new SysRoleDTO();
        BeanUtils.copyProperties(domain, dto);
        return dto;
    }

    /**
     * DTO转换为领域模型
     */
    public static SysRole toDomain(SysRoleDTO dto) {
        if (dto == null) {
            return null;
        }
        SysRole domain = new SysRole();
        BeanUtils.copyProperties(dto, domain);
        return domain;
    }

    /**
     * 领域模型列表转换为DTO列表
     */
    public static List<SysRoleDTO> toDTOList(List<SysRole> domainList) {
        if (domainList == null || domainList.isEmpty()) {
            return new ArrayList<>();
        }
        List<SysRoleDTO> dtoList = new ArrayList<>();
        for (SysRole domain : domainList) {
            dtoList.add(toDTO(domain));
        }
        return dtoList;
    }

    /**
     * DTO列表转换为领域模型列表
     */
    public static List<SysRole> toDomainList(List<SysRoleDTO> dtoList) {
        if (dtoList == null || dtoList.isEmpty()) {
            return new ArrayList<>();
        }
        List<SysRole> domainList = new ArrayList<>();
        for (SysRoleDTO dto : dtoList) {
            domainList.add(toDomain(dto));
        }
        return domainList;
    }
}
